Increasing advances in computer technology (e.g., microprocessor speed, memory capacity, data transfer bandwidth, software functionality, and the like) have generally contributed to enhanced computer application in various industries. Ever more powerful server systems, which are often configured as an array of servers, are commonly provided to service requests originating from external sources such as the World Wide Web, for example.
As the amount of available electronic data grows, it becomes more important to store such data in a manageable manner that facilitates user friendly and quick data searches and retrieval. Today, a DataBase Management System (DBMS) can typically manage any form of data including text, images, sound and video, and a common approach is to store electronic data in one or more databases. In general, a typical database can be referred to as an organized collection of information with data structured such that a computer program can quickly search and select desired pieces of data, for example. Commonly, data within a database is organized via one or more tables. Such tables are arranged as an array of rows and columns. In accordance thereto, database and file structures are determined by the software application.
Also, the tables can comprise a set of records, and a record includes a set of fields. Records are commonly indexed as rows within a table and the record fields are typically indexed as columns, such that a row/column pair of indices can reference a particular datum within a table. For example, a row can store a complete data record relating to a sales transaction, a person, or a project. Likewise, columns of the table can define discrete portions of the rows that have the same general data format, wherein the columns can define fields of the records.
Queries for such tables can be constructed in accordance to a standard query language (e.g., structured query language (SQL)) in order to access content of a table in the database. Likewise, data can be input (e.g., imported) into the table via an external source. Moreover, Database application designers can typically model the world using data modeling languages, such as the Entity Relationship Model, and the Unified Data Model Language (UML), for example.
Typically, a work load can include a plurality of queries. Such queries can take significant time to be performed on an entirety of a table. Accordingly, vertical partitioning, which enables splitting of the table into two or more tables (e.g., sub-tables), plays an important role in various aspects of physical design in a relational database system, and can significantly impact performance. For example, since many queries in general access only a small subset of the columns in a table, vertical partitioning can reduce the amount of data that needs to be scanned to answer the query.
At the same time, incorporating partitioning further complicates the problem of automating physical design, since the choices of partitioning can strongly interact with choices of indexes and materialized views. Moreover, a large new space of physical design alternatives should typically be considered—for example, each table can be vertically partitioned in many different ways. Similarly, for each index or materialized view that can be considered, a plurality of variations can exist for that structure, each partitioned in a different manner.
Therefore, there is a need to overcome the aforementioned exemplary deficiencies associated with conventional systems and devices.